#pragma once

#include "Iterador.h"
#include "Puntero.h"

template <class T>
class ConcatIterador : public Iterador<T>
{
public:
	ConcatIterador(Puntero<Iterador<T>> parte1, Puntero<Iterador<T>> parte2);
	virtual ~ConcatIterador();

	void Reiniciar();
	bool HayElemento() const;
	const T& ElementoActual() const;
	void Avanzar();

private:
	Puntero<Iterador<T>> m_Parte1;
	Puntero<Iterador<T>> m_Parte2;
	bool m_PrimeraParte;
	mutable T m_Actual;
};

#include "ConcatIterador.cpp"